<?php

function list_department($cancel){
	echo "<table cellpadding=\"5\" cellspacing=\"0\" border=\"1\"><tr><td>หน่วยงาน</td><td>ลบหน่วยงาน</td><td>ยกเลิกหน่วยงาน</td></tr>\n";
	if($cancel=="t") $q =  "select * from view_depart_hier;";
	else $q =  "select * from view_depart_hier where depart_cancel='f';";
	$ans = getPG($q);
	$node = findRoot($ans);
	if($node==-1) return;
	foreach($node as $data){
		list_department_recur($ans,$data,0,$cancel);		
	}
	echo "</table>";
}

function list_department_recur($ans,$under,$level,$cancel){
	if($under['depart_cancel']=='t' and $cancel=="f") return;
	$prefix = "";		
	for($i=0;$i<$level;$i++) $prefix = $prefix.'===';
	echo "<tr><td><a href=\"update.php?domain=depart&comm=edit&depart_id=".$under['under_depart_id']."&depart_name=".$under['under_name']."&head_depart=".$under['head_depart_id']."\">".$prefix.$under['under_name']."</a></td><td><a href=\"update.php?domain=depart&comm=del&depart_id=".$under['under_depart_id']."&depart_name=".$under['under_name']."\"><img src=\"pic/drop.png\" /></a></td><td><a href=\"update.php?domain=depart&comm=cancel&c=".$under['depart_cancel']."&depart_id=".$under['under_depart_id']."&depart_name=".$under['under_name']."\">".depart_cancel_code($under['depart_cancel'])."</td></tr>\n";
	foreach($ans as $dat){
		if(($dat['head_depart_id']==$under['under_depart_id'])&&($dat['head_depart_id']!=$dat['under_depart_id']))
			list_department_recur($ans,$dat,$level+1,$cancel);
	}
}

function depart_cancel_code($cancel){
	if($cancel=='t') return "ยกเลิก";
	else return "ปกติ";
}

function cancelDepart($depart_id,$depart_name,$c){
    if($_SESSION['edoc_type']!=0){
        addlog("ยกเลิกหน่วยงาน","ไม่สามารถยกเลิกหน่วยงาน $depart_name ได้");
        return -1;
    }
	if($c=='t') $q = "update department set depart_cancel='f' where depart_id=$depart_id;";
	else $q = "update department set depart_cancel='t' where depart_id=$depart_id;";

	$r = updatePG($q);
	if($r==FALSE)
	{
		addlog("ยกเลิกหน่วยงาน","ไม่สามารถยกเลิกหน่วยงาน $depart_name ได้");
		return -1;
	}
	addlog("ยกเลิกหน่วยงาน","ยกเลิกหน่วยงาน $depart_name เรียบร้อยแล้ว");
	return 0;
}

function add_depart($depart_namex,$head){
    if($_SESSION['edoc_type']!=0){
        addlog("เพิ่มหน่วยงาน","ไม่สามารถเพิ่มหน่วยงาน $depart_name ได้");
        return -1;
    }
	$depart_name = trim($depart_namex);
	if($depart_name==""){
		addlog("เพิ่มหน่วยงาน","ไม่สามารถเพิ่มหน่วยงาน $depart_name ได้");
		return -1; //add department error
	}
	$id = getPG("select nextval('department_depart_id_seq');");
	$id = $id[0]['nextval'];
	
	$r = updatePG("insert into department (depart_id,depart_name) values ($id,'$depart_name');");
	if($head==0){
		updatePG("insert into department_hier (head_depart_id,under_depart_id) values ($id,$id);");
	}else{
		updatePG("insert into department_hier (head_depart_id,under_depart_id) values ($head,$id);");
	}
	if($r==FALSE)
	{
		addlog("เพิ่มหน่วยงาน","ไม่สามารถเพิ่มหน่วยงาน $depart_name ได้");
		return -1; //add department error
	}
	updatePG("create sequence depart_recieve_seq_".$id.";");
	addlog("เพิ่มหน่วยงาน","เพิ่มหน่วยงาน $depart_name เรียบร้อยแล้ว");
	return $id;
}

function update_depart($depart_id,$depart_namex,$depart_name_old,$head){
    if($_SESSION['edoc_type']!=0){
        addlog("แก้ไขหน่วยงาน","ไม่สามารถแก้ไขหน่วยงาน $depart_name ได้");
        return -1;
    }
	$depart_name = trim($depart_namex);
	if($depart_name==""){
		addlog("แก้ไขหน่วยงาน","ไม่สามารถแก้ไขหน่วยงาน $depart_name ได้");
		return -1; //update department error
	}

	if($depart_id==1){
		addlog("แก้ไขหน่วยงาน","ไม่สามารถแก้ไขหน่วยงาน $depart_name_old ไปเป็น $depart_name ได้");
		return -1; //update department error
	}
	$r = updatePG("update department set depart_name='$depart_name' where depart_id=$depart_id;");
	if($head==0) $head_depart = $depart_id;
	else $head_depart = $head;
	updatePG("update department_hier set head_depart_id=$head_depart where under_depart_id=$depart_id;");
	
	if($r==FALSE){
		addlog("แก้ไขหน่วยงาน","ไม่สามารถแก้ไขหน่วยงาน $depart_name_old ไปเป็น $depart_name ได้");
		return -1; //update department error
	}
	addlog("แก้ไขหน่วยงาน","แก้ไขหน่วยงาน $depart_name_old ไปเป็น $depart_name เรียบร้อยแล้ว");
	return 0;
}

function delDepart($depart_id,$depart_name){
    if($_SESSION['edoc_type']!=0){
		addlog("ลบหน่วยงาน","ไม่สามารถลบหน่วยงาน $depart_name ได้");
        return -1;
    }
	if($depart_id==1){
		addlog("ลบหน่วยงาน","ไม่สามารถลบหน่วยงาน $depart_name ได้");
		return -1; //delete department error
	}
	$r = getPG("select * from department_hier where head_depart_id=$depart_id and head_depart_id <> under_depart_id;");
	if($r[0]){
		addlog("ลบหน่วยงาน","ไม่สามารถลบหน่วยงาน $depart_name ได้");
		return -1; //delete department error
	}
	$hier = getPG("select * from department_hier where under_depart_id=$depart_id;");
	updatePG("delete from department_hier where under_depart_id=$depart_id;");
	$r = updatePG("delete from department where depart_id=$depart_id;");
	if($r==FALSE){
		addlog("ลบหน่วยงาน","ไม่สามารถลบหน่วยงาน $depart_name ได้");
		updatePG("insert into department_hier (head_depart_id,under_depart_id) values (".$hier[0]['head_depart_id'].",".$hier[0]['under_depart_id'].");");
		return -1; //delete department error
	}
	addlog("ลบหน่วยงาน","ลบหน่วยงาน $depart_name เรียบร้อยแล้ว");
	updatePG("drop sequence depart_recieve_seq_".$depart_id.";");
	return 0;
}

function get_depart_name($depart_id){
	if($depart_id==0) return $_SESSION['edoc_depart'];
	$q = "select depart_name from department where depart_id=$depart_id;";
	$ans = getPG($q);
	return $ans[0]['depart_name'];
}

function get_depart_id($depart_name){
	$q = "select depart_id from department where depart_name='$depart_name';";
	$ans = getPG($q);
	return $ans[0]['depart_id'];
}

function getDepartCode($depart_id)
{
	$q = "select depart_code from department where depart_id=$depart_id;";
	$ans = getPG($q);
	return $ans[0]['depart_code'];
}

function updateDepartCode($depart_id,$depart_code)
{
	$depart_codex = str_replace(" ","",$depart_code);
	$q = "update department set depart_code='$depart_codex' where depart_id=$depart_id;";
	$r = updatePG($q);
	if($r==FALSE)
	{
		addlog("แก้ไขรหัสหน่วยงาน","ไม่สามารถแก้ไขรหัสหน่วยงาน ".get_depart_name($depart_id)." เป็น $depart_codex ได้");
		return -1;
	}
	addlog("แก้ไขรหัสหน่วยงาน","แก้ไขรหัสหน่วยงาน ".get_depart_name($depart_id)." เป็น $depart_codex เรียบร้อยแล้ว");
}

?>
